home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 1146 / 1146.xpi / chrome / screengrab.jar / content / Document.js < prev    next >
Text File  |  2009-03-09  |  3KB  |  97 lines

  1.  
  2. screengrab.Document = function(myDocument) {
  3.     this.doc = myDocument;
  4.     this.undos = new screengrab.UndoSet();
  5. }
  6.  
  7. screengrab.Document.prototype = {
  8.     
  9.     getDocuments : function(contentWin) {
  10.         var contentDocs = new Array();
  11.         for (var i = 0; i < contentWin.frames.length; i++) {
  12.             contentDocs = contentDocs.concat(this.getDocuments(contentWin.frames[i]));
  13.         }
  14.         contentDocs.push(contentWin.document);
  15.         return contentDocs;
  16.     },
  17.     
  18.     getDimensionsOf : function(element) {
  19.         var box = element.ownerDocument.getBoxObjectFor(element);
  20.         var sgBox = new screengrab.Box(box.x, box.y, box.width, box.height)
  21.         sg.debug(element + " " + sgBox);
  22.         return sgBox;
  23.     },
  24.     
  25.     head : function() {
  26.         var heads = this.doc.getElementsByTagName("head");
  27.         if (heads.length == 0) {
  28.             var body = doc.getElementsByTagName("html")[0];
  29.             var head = doc.createElement("head");
  30.             body.appendChild(head);            
  31.             this.undos.pushRemoveFromParent(head, body);
  32.         }
  33.         return this.doc.getElementsByTagName("head")[0];
  34.     },
  35.     
  36.     includeScript : function(id, url) {
  37.         var script = this.doc.createElement("script");
  38.         script.id = id;
  39.         script.language = "JavaScript";
  40.         script.type = "text/javascript";
  41.         script.src = url;
  42.         var head = this.head();
  43.         head.appendChild(script);
  44.         this.undos.pushRemoveFromParent(script, head);
  45.     },
  46.     
  47.     includeStyle : function(id, url) {
  48.         var css = this.doc.createElement("link");
  49.         css.id = id;
  50.         css.rel = "stylesheet";
  51.         css.type = "text/css";
  52.         css.href = url;
  53.         var head = this.head();
  54.         head.appendChild(css);
  55.         this.undos.pushRemoveFromParent(css, head);
  56.     },
  57.     
  58.     setAllFlashOpaque : function() {
  59.         try {
  60.             var embedded = this.doc.getElementsByTagName("embed");
  61.             for (var i = 0; i < embedded.length; i++) {
  62.                 var embed = embedded[i];
  63.                 var orig = embed.getAttribute("wmode");
  64.                 var parent = embed.parentNode;
  65.                 embed.setAttribute("wmode", "opaque");
  66.                 parent.removeChild(embed);
  67.                 parent.appendChild(embed);
  68.                 this.undos.push(function() {
  69.                     embed.setAttribute("wmode", orig);
  70.                     parent.removeChild(embed);
  71.                     parent.appendChild(embed);
  72.                 });
  73.             }
  74.         } catch (e) {
  75.             sg.error(e);
  76.         }
  77.     },
  78.     
  79.     getAllEmbeddedDimensions : function() {
  80.         var boxesToGrab = new Array();
  81.         var me = this;
  82.         fill = function(elements) {
  83.             for (var i = 0; i < elements.length; i++) {
  84.                 boxesToGrab.push(me.getDimensionsOf(elements[i]));
  85.             }
  86.         }
  87.         fill(this.doc.getElementsByTagName("applet"));
  88.         fill(this.doc.getElementsByTagName("object"));
  89.         fill(this.doc.getElementsByTagName("embed"));
  90.         return boxesToGrab;
  91.     },
  92.     
  93.     undo : function() {
  94.         this.undos.undo();
  95.     }
  96. }
  97.